/*
fseek()
每个文件指针都有一个内部指示器（内部指针），记录当前打开的文件的读写位置（file position），即下一次读写从哪里开始。文件操作函数（比如getc()、fgets()、fscanf()和fread()等）都从这个指示器指定的位置开始按顺序读写文件。

如果希望改变这个指示器，将它移到文件的指定位置，可以使用fseek()函数。它的原型定义在头文件stdio.h。

int fseek(FILE* stream, long int offset, int whence);
fseek()接受3个参数。

stream：文件指针。
offset：距离基准（第三个参数）的字节数。类型为 long int，可以为正值（向文件末尾移动）、负值（向文件开始处移动）或 0（保持不动）。
whence：位置基准，用来确定计算起点。它的值是以下三个宏（定义在stdio.h）：SEEK_SET（文件开始处）、SEEK_CUR（内部指针的当前位置）、SEEK_END（文件末尾）
请看下面的例子。

// 定位到文件开始处
fseek(fp, 0L, SEEK_SET);

// 定位到文件末尾
fseek(fp, 0L, SEEK_END);

// 从当前位置后移2个字节
fseek(fp, 2L, SEEK_CUR);

// 定位到文件第10个字节
fseek(fp, 10L, SEEK_SET);

// 定位到文件倒数第10个字节
fseek(fp, -10L, SEEK_END);
上面示例中，fseek()的第二个参数为 long 类型，所以移动距离必须加上后缀L，将其转为 long 类型。

下面的示例逆向输出文件的所有字节。

for (count = 1L; count <= size; count++) {
  fseek(fp, -count, SEEK_END);
  ch = getc(fp);
}
注意，fseek()最好只用来操作二进制文件，不要用来读取文本文件。因为文本文件的字符有不同的编码，某个位置的准确字节位置不容易确定。

正常情况下，fseek()的返回值为0。如果发生错误（如移动的距离超出文件的范围），返回值为非零值（比如-1)。
*/